Skip to content

Java - Type cast null parameters in samples and tests - #11967

Merged
Weidong Xu (weidongxu-microsoft) merged 1 commit into
mainfrom
Java_TypeCastNullParametersInSamplesAndTests
Sep 16, 2026
Merged

Weidong Xu (weidongxu-microsoft) merged 1 commit into
mainfrom
Java_TypeCastNullParametersInSamplesAndTests

Conversation

@alzimmermsft

Copy link
Copy Markdown
Contributor

Adds type casting to null parameters in generated Java samples and tests to prevent ambiguous call site errors after generation.

@github-actions

Copy link
Copy Markdown
Contributor

All changed packages have been documented.

  • ✅ @typespec/http-client-java
Show changes

@typespec/http-client-java - fix ✏️

Cast null arguments to their declared Java types in generated samples and tests so overloaded API calls are unambiguous.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Changes recommended

One or more issues must be addressed before approval.

Get a fresh assessment by requesting another Copilot review.

Pull request overview

Updates Java emitter example generation so typed null arguments avoid ambiguous overloaded calls.

Changes:

  • Added shared null-parameter casting logic.
  • Applied it to protocol and client-method examples.
  • Updated generated samples/tests and added coverage plus a changelog entry.
File summaries
File Description
packages/http-client-java/generator/http-client-generator-test/src/test/java/tsptest/versioning/generated/VersioningOpListTests.java Updated as part of this pull request.
packages/http-client-java/generator/http-client-generator-test/src/test/java/tsptest/specialchars/generated/BuiltinOpReadTests.java Updated as part of this pull request.
packages/http-client-java/generator/http-client-generator-test/src/test/java/tsptest/model/generated/ModelOpPutNestedTests.java Updated as part of this pull request.
packages/http-client-java/generator/http-client-generator-test/src/test/java/tsptest/flatten/generated/FlattenOpSendTests.java Updated as part of this pull request.
packages/http-client-java/generator/http-client-generator-test/src/test/java/tsptest/builtin/generated/BuiltinOpReadTests.java Updated as part of this pull request.
packages/http-client-java/generator/http-client-generator-test/src/samples/java/tsptest/versioning/generated/VersioningOpList.java Updated as part of this pull request.
packages/http-client-java/generator/http-client-generator-test/src/samples/java/tsptest/specialchars/generated/BuiltinOpRead.java Updated as part of this pull request.
packages/http-client-java/generator/http-client-generator-test/src/samples/java/tsptest/model/generated/ModelOpPutNested.java Updated as part of this pull request.
packages/http-client-java/generator/http-client-generator-test/src/samples/java/tsptest/flatten/generated/FlattenOpSend.java Updated as part of this pull request.
packages/http-client-java/generator/http-client-generator-test/src/samples/java/tsptest/builtin/generated/BuiltinOpRead.java Updated as part of this pull request.
packages/http-client-java/generator/http-client-generator-core/src/test/java/com/microsoft/typespec/http/client/generator/core/template/example/ExampleWriterUtilTests.java Updated as part of this pull request.
packages/http-client-java/generator/http-client-generator-core/src/main/java/com/microsoft/typespec/http/client/generator/core/template/example/ProtocolExampleWriter.java Updated as part of this pull request.
packages/http-client-java/generator/http-client-generator-core/src/main/java/com/microsoft/typespec/http/client/generator/core/template/example/ExampleWriterUtil.java Updated as part of this pull request.
packages/http-client-java/generator/http-client-generator-core/src/main/java/com/microsoft/typespec/http/client/generator/core/template/example/ClientMethodExampleWriter.java Updated as part of this pull request.
.chronus/changes/http-client-java-cast-null-sample-arguments-2026-09-15.md Updated as part of this pull request.
Review details

Suppressed comments (2)

packages/http-client-java/generator/http-client-generator-core/src/main/java/com/microsoft/typespec/http/client/generator/core/template/example/ClientMethodExampleWriter.java:67

  • The added tests do not exercise this ClientMethodExampleWriter path; they only call ExampleWriterUtil.getParameterExpression directly. Add an entrypoint test for a client-method example with a typed null parameter so the parameter mapping, cast, and required import are verified together.
        String parameterInvocations = methodParameters.stream()
            .map(methodParameter -> ExampleWriterUtil.getParameterExpression(
                methodParameter.getClientMethodParameter().getClientType(),
                nodeVisitor.accept(parseNodeFromParameter(method, proxyMethodExample, methodParameter))))
            .collect(Collectors.joining(", "));

packages/http-client-java/generator/http-client-generator-core/src/main/java/com/microsoft/typespec/http/client/generator/core/template/example/ProtocolExampleWriter.java:82

  • This new call site is not covered by the added tests: ExampleWriterUtilTests invokes the helper directly, so it would still pass if ProtocolExampleWriter stopped applying the cast or collecting the type import. Add a template/writer test that exercises a nullable non-java.lang parameter (for example OffsetDateTime) and asserts the rendered invocation and imports.
            params.add(ExampleWriterUtil.getParameterExpression(parameter.getClientType(),
                parameter.getClientType().defaultValueExpression()));
  • Files reviewed: 5/15 changed files
  • Comments generated: 1
  • Review effort level: Lite

💡 Configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

@azure-sdk-automation

Copy link
Copy Markdown

You can try these changes here

🛝 Playground 🌐 Website 🛝 VSCode Extension

Merged via the queue into main with commit ad33c95 Sep 16, 2026
37 checks passed
@weidongxu-microsoft
Weidong Xu (weidongxu-microsoft) deleted the Java_TypeCastNullParametersInSamplesAndTests branch September 16, 2026 03:06
Weidong Xu (weidongxu-microsoft) added a commit to Azure/typespec-azure that referenced this pull request Sep 16, 2026
## Summary

- cherry-pick the TypeSpec Java 0.47.0 sync and publish commits onto the
September release branch
- update the TypeSpec core pin to `057557b68`
- include fixes from microsoft/typespec#11967, microsoft/typespec#11982,
and microsoft/typespec#11983

## Validation

- `pnpm format`
- `pnpm lint`
- `pnpm -r --filter "@azure-tools/typespec-java..." build`
- `pnpm regenerate -- --parallelization 4 --skip-build`
- `pnpm test`
- `pnpm test:java:e2e`

---------

Copilot-Session: 6c2c4c77-2a95-4598-bef6-898cd8b31623
Copilot-Session: bbb8f8a7-8cb7-4e00-8c51-872dee15fcc9
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

emitter:client:java Issue for the Java client emitter: @typespec/http-client-java

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants